package Componentes;

import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JToolBar;

/**
 * @author Luis Antonio Lara Capetillo
 * Fecha: 05/09/11
 *
 * Descripcion:
 * Clase donde se crea un menu movible ideal para colocar herramientas en
 * en la pantalla de la aplicacion, tambien es editable con varias opciones
 *
 * @version 1.0
 */
public class C_MenuMovible extends JToolBar {

    private JButton jBtn_Opciones[];
    private JLabel lbl_Opciones[];
    private JFrame ventana;

    /**
     * Constructor de la clase C_MenuMovible
     *
     * @param ventana JFrame
     */
    public C_MenuMovible(JFrame ventana) {
        this.ventana = ventana;
        this.setOrientation(VERTICAL);
        
    }

    /**
     * Constructor de la clase C_MenuMovible
     */
    public C_MenuMovible() {
        this.setFloatable(false);
        this.setBorderPainted(false);
        this.setOpaque(false);
    }


    /*************************************************************************
     ***               Seccion de Setters y Getters                        ***
     *************************************************************************/

    /**
     * Metodo para obtener el arreglo de botones del menu movible
     *
     * @return jBtn_Opciones[]
     */
    public JButton[] getjBtn_Opciones() {
        return jBtn_Opciones;
    }

    /**
     * Metodo para asignar un nuevo valor al arreglode botones
     * del menu movible
     *
     * @param jBtn_Opciones[]
     */
    public void setjBtn_Opciones(JButton[] jBtn_Opciones) {
        this.jBtn_Opciones = jBtn_Opciones;
    }

    /**
     * Metodo para optener el boton del menu
     * @param num  es el numero del boton dentro de la matrix
     * @return jBtn_Opciones[i]
     */
    public JButton getjBtn_Opciones(int num) {
        return jBtn_Opciones[num];
    }

    /**
     * Metodo para obtener el arreglo de etiquetas
     *
     * @return lbl_Opciones[]
     */
    public JLabel[] getLbl_Opciones() {
        return lbl_Opciones;
    }

    /**
     * Metodo para asignar un nuevo arreglo de etiquetas
     *
     * @param lbl_Opciones
     */
    public void setLbl_Opciones(JLabel[] lbl_Opciones) {
        this.lbl_Opciones = lbl_Opciones;
    }

    /**
     * Metodo para obtener la etiqueta deceada del arreglo
     *
     * @param num indica el indice
     * @return lbl_Opciones[num]
     */
    public JLabel getLbl_Opciones(int num) {
        return lbl_Opciones[num];
    }

    /**
     * Metodo para asignar una nueva etiqueta a una etiqueta espesifa
     * del arreglo de etiquetas
     *
     * @param lbl_Opcion   etiqueta
     * @param num  numero del indice
     */
    public void setLbl_Opciones(JLabel lbl_Opcion,int num) {
        this.lbl_Opciones[num] = lbl_Opcion;
    }


    /*************************************************************************
     ***               Seccion de Metodos                                  ***
     *************************************************************************/

    /**
     * Metodo para el GridLayout de la clase C_MenuMovible
     * @param fila
     * @param columna
     */
    public void m_GridLayout(int fila, int columna){
        setLayout(new GridLayout(fila, columna));
    }

    /**
     * Metodo para cambiar el menu a vertical
     * sin bordes ni opacidad
     */
    public void m_Vertical(){
        this.setFloatable(false);
//        this.setBorderPainted(false);
//        this.setOpaque(false);
        this.setOrientation(VERTICAL);
    }

    /**
     * Metodo para agregar botones a la barra
     * @param numBotones numero de botones
     */
    public void addBotones(int numBotones) {
        jBtn_Opciones = new JButton[numBotones];
        for (int i = 0; i < jBtn_Opciones.length; i++) {
            jBtn_Opciones[i] = new JButton();
            jBtn_Opciones[i].setOpaque(false);
            jBtn_Opciones[i].setBorderPainted(false);
            jBtn_Opciones[i].setContentAreaFilled(false);
            add(jBtn_Opciones[i]);
        }
//        ventana.add(C_MenuMovible.this, "West");
    }

    /**
     * Metodo para agregar label a la barra
     * @param numLabels
     */
    public void addLabels(int numLabels) {
        lbl_Opciones = new JLabel[numLabels];
        JPanel p= new JPanel();
        p.setOpaque(false);
        p.setLayout(new GridLayout(1, 6));
        for (int i = 0; i < lbl_Opciones.length; i++) {
            lbl_Opciones[i] = new JLabel();
            lbl_Opciones[i].setOpaque(false);
//            lbl_Opciones[i].setText(":  0");
            p.add(lbl_Opciones[i]);
        }
        add(p);
//        ventana.add(C_MenuMovible.this, "West");
    }

    /**
     * Metodo para agregar botones a la barra
     * @param nomBotones nombre de los botones
     */
    public void addBotones(String nomBotones[]) {
        jBtn_Opciones = new JButton[nomBotones.length];
        for (int i = 0; i < jBtn_Opciones.length; i++) {
            jBtn_Opciones[i] = new JButton(nomBotones[i]);
            jBtn_Opciones[i].setOpaque(false);
            jBtn_Opciones[i].setContentAreaFilled(false);
            add(jBtn_Opciones[i]);
        }
        
//        ventana.add(C_MenuMovible.this, "West");
    }
}
